<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>变量</title>

<para>
<ptitle>变量</ptitle>
　TJS2 的变量是由 <kw>var</kw> 关键字指定的。TJS2 中，变量如果不进行实现声明则无法使用。<r/>
　var 关键字的使用方法如下所示。<r/>
<bq>
　var 变量名;<r/>
</bq>
　可以通过 <kw>,</kw> (逗号) 分隔在同一个语句中指定多个变量名称。当变量需要指定初始值的时候，可以通过类似<r/>
<bq>
　var 变量名 = 初期値;<r/>
</bq>
　这样的方法给变量指定初始值。<r/>
<example>
	var variable=0;<r/>
	var var2=variable+2;<r/>
	var var3="this is var3.";<r/>
	var var1,var2,var3;<r/>
	var a=0,b=1,c=3;<r/>
</example>
<r/>
　在声明变量时不需要指定变量的类型，变量将自动被更改为赋值对象的类型。此外，在计算的过程以及不同的上下文中，变量的类型将会被自动转换。<r/>
</para>

<para>
<ptitle>变量名</ptitle>
　所有有效的标示符都可以作为变量名使用。<r/>
<example>
	var ampan;<r/>
	var 123a;  // 变量名不能使用数字开头，该句非法<r/>
	var function; // function 为保留字，该句非法<r/>
	var function1; // 虽然包含保留字，但是并非保留字，所以该句合法<r/>
	var 变量その一; // 全角文字，包括汉字和全角符号等都可以使用<r/>
</example>
</para>

<para>
<ptitle>变量的２重声明</ptitle>
　对相同名称的变量进行两次以上的声明并不会出错。只是，如果第二次以后的声明中指定了初始值，则这个初始值将被赋给变量。如果第二次以后的声明没有指定初始值，则变量的值将是 void 。<r/>
<example>
	var a=0;<r/>
	var a; // 第二次的声明(不会出错，但是 a 的值会变成 void)<r/>
	var a=-1; // 第三次的声明 (不会出错，但是 a 的值会被赋为 -1)<r/>
</example>
</para>

<para>
<ptitle>变量的有效作用域</ptitle>
　{  }  (代码段) 中声明的变量，只在该代码段中有效，也就是所谓的<kw>本地变量</kw>。<r/>
　此外，TJS2 和 C 语言不同，对于能够声明变量的位置没有限制。<r/>
<example>
	while(t--)<r/>
	{<r/>
		var ratio=t/all; // 声明变量 'ratio' <r/>
		setRatio(ratio);<r/>
	}<r/>
<r/>
	// 当控制转移到这里的时候，ratio 已经被删除了<r/>
<r/>
	var test; // 在这种地方也可以声明变量<r/>
</example>
<r/>
　此外，如果在代码段内声明了和代码段外的变量同名的变量，则代码段内只能访问到新声明的变量（本地变量）。<r/>
<example>
	var ratio=0;<r/>
	if(flag)<r/>
	{<r/>
		var ratio; // 与代码段外声明的变量同名的变量<r/>
<r/>
		ratio=buf.position / buf.totalTime; // 只能访问代码段内的 ratio <r/>
		setRatio(ratio);<r/>
	}<r/>
<r/>
	// 离开代码段是，代码段内的 ratio 被删除，而代码段外的 ratio 则不受影响<r/>
	ratio=-1;<r/>
</example>
<note>
　在所有的作用域之外（被称作全局作用域）使用 var 声明变量，则该变量将成为全局对象的成员。<r/>
</note>
</para>
</doc>